package com.demo.java.OD551_600.OD599;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【矩阵最大值(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146588253
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();  // 读取行数
        in.nextLine(); // 消耗掉换行符
        int total = 0; // 用来存储所有行最大值的总和

        // 读取每一行矩阵
        while (N > 0) {
            String[] matrix = in.nextLine().split(","); // 读取一行并按逗号分割
            total += cal(matrix);  // 计算该行的最大值并累加
            N--;  // 行数减1
        }

        // 输出最终结果
        System.out.println(total);
    }

    // 计算某行的最大值
    private static int cal(String[] matrix) {
        int max = 0;  // 记录最大值

        // 遍历每个位置，并计算循环左移后的值
        for (int i = 0; i < matrix.length; i++) {
            if ("1".equals(matrix[i])) {  // 遇到"1"时开始拼接
                StringBuilder value_str = new StringBuilder();

                // 将从当前位置开始到末尾的元素拼接在一起
                for (int m = i; m < matrix.length; m++) {
                    value_str.append(matrix[m]);
                }

                // 将从开始到当前位置前的元素拼接到后面
                for (int n = 0; n < i; n++) {
                    value_str.append(matrix[n]);
                }

                // 将拼接后的二进制字符串转换为十进制数
                max = Math.max(max, Integer.parseInt(value_str.toString(), 2));
            }
        }
        return max;  // 返回该行的最大值
    }
}